void merge_sort(vector<int> &a,int l,int r,vector<int> &temp){
	if(l<r){
		int mid = (l+r)/2;
		merge_sort(a,l,mid,temp);
		merge_sort(a,mid+1,r,temp);
		merge(a,l,mid,r,temp);
	}
	
}
void merge(vector<int> &a,int l,int mid,int r,vector<int> &temp){
	int i=l,j=mid+1;
	int t=i;
	while(i<=mid && j<=r){
		if(a[i]<=a[j]){
			temp[t++] = a[i++];
		}else{
			temp[t++] = a[j++];
		}
	}
	while(i<=mid){
		temp[t++] = a[i++];
	}
	while(j<=r){
		temp[t++] = a[j++];
	}
	for(int i=l;i<=r;++i){
		a[i]=temp[i];
	}
}
// 
void merge_sort(vector<int>&a){
	int len = a.size();
	vector<int> b(a);
	merge_sort(a,0,len-1,b);
	
}
int main(){
	
	
	vector<int> a;

	//***
	merge_sort(a);
}